Non-volatile memories often employ floating gate transistors to form bit cells that reliably store data even in the absence of a supplied voltage. Typically, the value stored at each bit cell depends on the conductivity of the floating gate transistor of the bit cell. The conductivity of the floating gate transistor, when enabled by the control gate, depends on the charge stored at the floating gate. Accordingly, prior to programming, each floating gate transistor has a certain conductivity assigned to one bit value (e.g., logic 1). To program a floating gate transistor to the other bit value (e.g., logic 0), a hot carrier injection (HCI) technique is utilized to inject electrons into the floating gate. The HCI technique typically includes the application of program voltages at the drain electrode and the control gate of the floating gate transistor that are sufficient to drive electrons into the floating gate.
Conventional memories employ a reiterative, sequential program and verification process. In these memories, a program voltage is applied to the floating gate transistor for a predetermined duration. After the duration has elapsed, the bit cell is read to verify that it was programmed correctly. If the test read of the bit cell indicates that the programming was unsuccessful, another program voltage is applied to the bit cell for another predetermined duration and the bit cell then is read again after the lapse of the duration to verify proper programming. This cycle can be repeated a number of times until the test read verifies that the bit cell has been programmed correctly. The repeated application of the program and verify cycle often results in substantial time invested in programming the bit cells of a non-volatile memory.
Further, the selection circuitry used to select a bit cell for programming often results in a somewhat unpredictable voltage drop between the source of the program voltage and the electrodes (typically the drain junction) of the floating gate transistor being programmed. Due to this unpredictability, a lower program voltage often is used so as to avoid junction breakdown of the floating gate transistor due to the application of excessive program voltage to the floating gate transistor as the hot carrier injection current drops to zero. This use of a lower program voltage typically requires the application of the program voltage for a longer duration, which increases the total time needed to program the bit cells of the non-volatile memory.
In view of the foregoing, it will be appreciated that an improved technique for programming and verifying floating gate transistor-based bit cells would be advantageous.
The use of the same reference symbols in different drawings indicates similar or identical items.